<script>
	import { onMount } from 'svelte';

	let p = 0;
	let visible = false;

	const sleep = ms => new Promise(f => setTimeout(f, ms));

	onMount(() => {
		let running = true;

		function next() {
			visible = true;
			p += 0.1;

			const remaining = 1 - p;
			if (remaining > 0.15) setTimeout(next, 500 / remaining);
		}

		setTimeout(next, 250);

		return () => {
			running = false;
		};
	});
</script>

<style>
	.progress-container {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 4px;
		z-index: 999;
	}

	.progress {
		position: absolute;
		left: 0;
		top: 0;
		height: 100%;
		background-color: var(--prime);
		transition: width 0.4s;
	}

	.fade {
		position: fixed;
		width: 100%;
		height: 100%;
		background-color: rgba(255,255,255,0.3);
		pointer-events: none;
		z-index: 998;
		animation: fade 0.4s;
	}

	@keyframes fade {
		from { opacity: 0 }
		to { opacity: 1 }
	}
</style>

{#if visible}
	<div class="progress-container">
		<div class="progress" style="width: {p * 100}%"></div>
	</div>
{/if}

{#if p >= 0.4}
	<div class="fade"></div>
{/if}